home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 2 / Amoszine 2.adf / MORE_SOURCE_CODE / med_with_sample.amos / med_with_sample.amosSourceCode < prev    next >
AMOS Source Code  |  1992-02-26  |  2KB  |  74 lines

  1. '
  2. ' Med with samples   
  3. ' By Edmund Clay 
  4. ' June 94  
  5. '
  6. ' This cures the problem that all samples are looped after a med module
  7. ' has been loaded. 
  8. ' I worked it out too late to save the samples in my last game 
  9. ' (blatant plug) which was The Lost Prince, available now from CLR.
  10. ' At least I'll know next time...
  11. '
  12. '----------------------------------------------------------------------
  13. '
  14. ' Load a med module... 
  15. '
  16. Med Load "df0:module.med",6
  17. '
  18. ' Play until mouse 
  19. '
  20. Print "Playing module, click mouse to stop."
  21. Med Play 6
  22. While Mouse Key=0 : Wend 
  23. While Mouse Key<>0 : Wend 
  24. '
  25. ' Stop the module  
  26. '
  27. Med Stop 
  28. Print "Click mouse to play sample."
  29. Do 
  30. While Mouse Key=0 : Wend 
  31. While Mouse Key<>0 : Wend 
  32. '
  33. ' Play sample  
  34. '  
  35. SAM["%1111",1,10000,0]
  36. Loop 
  37. '  
  38. ' An interesting point is that this bug actually works to your advantage,
  39. ' because you can now choose whether to have individual samples looped or not, 
  40. ' which AMOS doesn't normally allow. 
  41. ' If you try to play samples at the same time as Med modules, you have no  
  42. ' control over the frequency if med is using the same channel. 
  43. ' Unfortunately this will have to wait for a proper fix.   
  44. '
  45. Procedure SAM[VO1CE$,S4MPLE,FREQUENCY,L00P]
  46. '
  47. ' Parameters as the normal sam play command.   
  48. ' The voice bitmap has to be a string because I can't get btst to work.  
  49. ' L00P=0 - not looped
  50. ' L00P=-1 - looped     
  51. '
  52. '--------------------------------------------------------------------- 
  53. '
  54. ' Play the sample
  55. '  
  56. Sam Play Val(VO1CE$),S4MPLE,FREQUENCY
  57. '
  58. ' This makes sure that the first word of the sample is zero, preventing  
  59. ' nasty noises.  
  60. ' Assumes that samples are in bank 5.
  61. '
  62. Doke Start(5)+Leek(Start(5)+2+4*(S4MPLE-1))+14,0
  63. '
  64. ' This pokes values into the audio registers to stop the sample directly 
  65. ' since sam loop off has no effect. Try removing these lines to see what 
  66. ' happens.   
  67. '
  68. If Not L00P
  69. If Mid$(VO1CE$,5,1)="1" : Doke $DFF0A4,1 : End If 
  70. If Mid$(VO1CE$,4,1)="1" : Doke $DFF0B4,1 : End If 
  71. If Mid$(VO1CE$,3,1)="1" : Doke $DFF0C4,1 : End If 
  72. If Mid$(VO1CE$,2,1)="1" : Doke $DFF0D4,1 : End If 
  73. End If 
  74. End Proc